/***************************************************************************
dbconnection.cpp
-------------------
        begin                : 02.2011
        copyright            : by kuzkok
        email                : kuzkok@gmail.com
***************************************************************************
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*
*   Данная программа является свободным программным обеспечением;         *
*   Вы можете распространять ее и/или модифицировать в соответствии с     *
*   GNU General Public License опубликованной Фондом свободного           *
*   программного обеспечения; используемая версия лицензии - 2 или        *
*   (по вашему выбору) любая более поздняя                                *
**************************************************************************/
#include <QMessageBox>
#include <QSettings>

#include "dbconnection.h"
#include "qsql_psql.h"

dbconnection* dbconnection::myInst=0;

dbconnection* dbconnection::instance()
{
    //Проверка на наличие соединения нужна на тот случай
    //когда пользователь неверно задаст параметры подключения
    if(!myInst || !myInst->connected())
    {        
        if(myInst) delete myInst;
        myInst = new dbconnection();
    }
    return myInst;
}

QSqlDatabase dbconnection::database()
{
    return pdb;
}

dbconnection::~dbconnection()
{
    //QSqlDatabase::removeDatabase();
}

void dbconnection::drop()
{
    delete myInst;
}

bool dbconnection::connected()
{
    return mConnected;
}

dbconnection::dbconnection()
{
    QSettings settings;
    QString key ="/PostgreSQL/connections/pipeline/";
    QPSQLDriver *drv = new QPSQLDriver();
    pdb = QSqlDatabase::addDatabase(drv, "pipeline");
    pdb.setHostName(settings.value(key+"host").toString());
    pdb.setDatabaseName(settings.value(key+"database").toString());
    pdb.setPort(settings.value(key+"port").toInt());
    pdb.setUserName(settings.value(key+"username").toString());
    pdb.setPassword(settings.value(key+"password").toString());
    if(!(mConnected = pdb.open()))
        QMessageBox::information(0,"error", pdb.lastError().text(), QMessageBox::Ok);
}

void dbconnection::printInfo()
{

    QMessageBox::information( 0, "error", pdb.driver()->objectName() );
}
